﻿using System;
using System.ServiceModel;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;

using Arquitetura.Architectural.Model;
using Arquitetura.Architectural.BusinessLogic;
using Arquitetura.Architectural.Service;
using Arquitetura.Model;
using Arquitetura.BusinessLogic.Facade;
using Arquitetura.Service.Contract;

namespace Arquitetura.Service
{
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    public class SecretariaService :
        Arquitetura.Architectural.Service.Service,
        Arquitetura.Service.Contract.ISecretariaService
    {
        #region Propriedade(s)
        private ISecretariaFacade SecretariaFacade
        {
            get
            {
                return base.Resolve<ISecretariaFacade>();
            }
        }
        #endregion Propriedade(s)

        #region Construtor(es)
        public SecretariaService()
            : base() { }
        #endregion Construtor(es)

        #region Método(s)
        [OperationBehavior]
        public Result<IList<Aluno>> ListarAluno()
        {
            return SecretariaFacade.ListarAluno();
        }

        [OperationBehavior]
        public Result InserirAluno(Aluno aluno)
        {
            return SecretariaFacade.InserirAluno(aluno);
        }

        [OperationBehavior]
        public Result<IList<Aluno>> ListarAlunoFiltro(Aluno alunoFiltro, int skipCount, int takeCount, string sortExpression)
        {
            return SecretariaFacade.ListarAluno(alunoFiltro, skipCount, takeCount, sortExpression);
        }

        [OperationBehavior]
        public Result<int> ContarAlunoFiltro(Aluno alunoFiltro)
        {
            return SecretariaFacade.ContarAluno(alunoFiltro);
        }

        [OperationBehavior]
        public Result<Aluno> ConsultarAluno(Aluno aluno)
        {
            return SecretariaFacade.ConsultarAluno(aluno);
        }

        [OperationBehavior]
        public Result AlterarAluno(Aluno aluno)
        {
            return SecretariaFacade.AlterarAluno(aluno);
        }

        [OperationBehavior]
        public Result ExcluirAluno(Aluno aluno)
        {
            return SecretariaFacade.ExcluirAluno(aluno);
        }
        #endregion Método(s)
    }
}
